package com.study.spark.scala.chapter12

object Scala02_Regex {
  def main(args: Array[String]): Unit = {
    // TODO 正则表达式
    // 11位的电话号码验证

    // 1.准备数据
    println(isMobileNumber("18801234567"))
    println(isMobileNumber("11111111111"))
  }

  def isMobileNumber(number: String): Boolean ={
    // 2. 正则表达式的匹配规则
    val regex = "^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))[0-9]{8}$".r
    /*
    ^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))[0-9]{8}$
    ^                       字符串开始的位置
    前三位：
    (13[0-9])|              以13开头，第三位是0~9都行
    (14[5,7,9])|            以14开头，第三位是5,7,9都行
    (15[^4])|               以15开头，第三位除过4都行
    (18[0-9])|              以18开头，第三位是0~9都行
    (17[0,1,3,5,6,7,8])     以17开头，第三位是0,1,3,5,6,7,8中任一一个即可
    后八位：
    [0-9]{8}                八位0~9数字都行
    $                       字符串结束的位置
     */
    val length = number.length
    regex.findFirstMatchIn(number.slice(length-11,length)) != None
  }

}
